﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO;

namespace IBoLT.SettingWindows
{
	/// <summary>
	/// Логика взаимодействия для Window1.xaml
	/// </summary>
	public partial class SelectDB : Window
	{
		// Имя конфигурационного файла
		private String configFileName;
		// Имя параметра выбраной БД
		private String boxSDB;
		// Возможные знаения для этого параметра (0 - локальная; 1 - глобальная)
		private String[] SDBValue;
		// Имя параметра вывода окна выбора БД
		private String boxDontAskSDB;
		// Возможные знаения для этого параметра (0 - открывать; 1 - не открывать)
		private String[] dontAskValue;
		// Имя параметра, указывающего директорию сохранения
		private String dbresPath;
		// Имя директории сохранения текстур
		private String dbResultTextures;

		// Выбранная БД
		public string resultDB;

		public SelectDB(String _configFileName,
			String _boxSDB, String[] _SDBValue,
			String _boxDontAskSDB, String[] _dontAskValue,
			String _dbresPath, String _dbResultTextures)
		{
			configFileName = _configFileName;
			boxSDB = _boxSDB;
			SDBValue = _SDBValue;
			boxDontAskSDB = _boxDontAskSDB;
			dontAskValue = _dontAskValue;
			dbresPath = _dbresPath;
			dbResultTextures = _dbResultTextures;
			
			InitializeComponent();

			pathToTextures.Text = dbResultTextures;
			
			// Привязка команд к обработчикам //
			CommandBinding commBind = new CommandBinding(CommandsIBoLT.cWSelectDB, hWSelectDBEx); this.CommandBindings.Add(commBind);
			commBind = new CommandBinding(CommandsIBoLT.cSelectPath, hSelectPathEx); this.CommandBindings.Add(commBind);

			fInitializeForm(File.Exists(configFileName));
		}

		// Инициализация элементов управления из конфигурационного файла
		private void fInitializeForm(bool flag)
		{
			if (flag)
			{
				if (ConfigFile.fReturnValue(configFileName, boxSDB) == SDBValue[0].ToLower())
					localDB.IsChecked = true;
				else if (ConfigFile.fReturnValue(configFileName, boxSDB) == SDBValue[1].ToLower())
					globalDB.IsChecked = true;

				if (ConfigFile.fReturnValue(configFileName, boxDontAskSDB) == dontAskValue[0].ToLower())
					dontAsk.IsChecked = false;
				else if (ConfigFile.fReturnValue(configFileName, boxDontAskSDB) == dontAskValue[1].ToLower())
					dontAsk.IsChecked = true;
			}
		}

		// Обработчик кнопки "Выбрать"
		private void hSelectPathEx(object sender, ExecutedRoutedEventArgs e)
		{
			System.Windows.Forms.FolderBrowserDialog dlg = new System.Windows.Forms.FolderBrowserDialog();
			System.Windows.Forms.DialogResult result = dlg.ShowDialog();
			dlg.Description = "Выбор директории для хранения текстур";

			if (result == System.Windows.Forms.DialogResult.OK)
			{
				pathToTextures.Text = dbResultTextures = dlg.SelectedPath;
			}
		}

		// Обработчик кнопки "Ок"
		private void hWSelectDBEx(object sender, ExecutedRoutedEventArgs e)
		{
			StreamWriter sw = new StreamWriter(configFileName, false);

			if (localDB.IsChecked.Value)
				resultDB = SDBValue[0];
			else
				resultDB = SDBValue[1];
			sw.WriteLine(boxSDB + " = " + resultDB + ";");

			if (!dontAsk.IsChecked.Value)
				sw.WriteLine(boxDontAskSDB + " = " + dontAskValue[0] + ";");
			else
				sw.WriteLine(boxDontAskSDB + " = " + dontAskValue[1] + ";");

			sw.WriteLine(dbresPath + " = " + dbResultTextures + ";");

			sw.Close();

			// Диалог успешен
			DialogResult = true;
		}
	}
}
